const Router = require('koa-router');
const {UserLoginDao} = require('../../dao/login');
const { registValidator, loginValidator, PositiveUserIdParamsValidator} = require('../../validators/login')
const {Resolve} = require('../../lib/helper');
const res = new Resolve();
const {LoginManager} = require('../../service/userLogin');
const multer = require('koa-multer');
const router = new Router({
    prefix: '/api/v1'
  })

router.post('/regist', async (ctx) => {

    // 通过验证器校验参数是否通过
    const v = await new registValidator().validate(ctx);
  

    const user = await UserLoginDao.create({
        mail: v.get('body.mail'),
        pwd: v.get('body.pwd'),
        is_student: v.get('body.is_student'),
        number: v.get('body.number'),
        work_number: v.get('body.work_number'),
        created_at: v.get('body.created_at'),
        nickname: v.get('body.nickname'),
        account: v.get('body.account'),
    });
    // 返回结果
    ctx.response.status = 200;
    ctx.body = res.json(user);
  })


  // 管理登录
router.post('/userLogin', async (ctx) => {
    const v = await new loginValidator().validate(ctx);
    let obj = await LoginManager.userLogin({
        account: v.get('body.account'),
        pwd: v.get('body.pwd')
    });
    ctx.response.status = 200;
    ctx.body = {
      code: 200,
      msg: '登录成功',
      result: obj
    }
  });


  var storage = multer.diskStorage({
    //文件保存路径
    destination: function (req, file, cb) {
      cb(null, 'public/upload/')
    },
    //修改文件名称
    filename: function (req, file, cb) {
      var fileFormat = (file.originalname).split(".");
      cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]);
    }
  })
  var upload = multer({ storage: storage });
  // 管理登录http://127.0.0.1:3000/upload/1649661835660.jpeg
  router.post('/upload', upload.single('file'), async (ctx, next) => {
    let imgUrl = `/upload/${ctx.req.file.filename}`
    ctx.response.status = 200;
    ctx.body = {
      filename: ctx.req.file.filename,//返回文件名
      path: imgUrl
    }
  })


  /**
 * 查询文章详情
 */
router.get('/userInfo/:id', async (ctx) => {
  // 尝试获文章取缓存
  // const key = `${REDIS_KEY_API_PREFIX}_user_detail_${ctx.params.id}`
  // const cacheArticleDetail = await getRedis(key)
  // if (cacheArticleDetail) {
  //   ctx.body = res.json(cacheArticleDetail);

  // } else {
    // 通过验证器校验参数是否通过
    const v = await new PositiveUserIdParamsValidator().validate(ctx);
    const id = v.get('path.id');
    const user = await UserLoginDao.detail(id);

    ctx.response.status = 200;
    ctx.body = res.json(user);
  // }
})
//   // 删除评论
//   router.delete('/comment/:id', new Auth(AUTH_ADMIN).m, async (ctx) => {
  
//     // 通过验证器校验参数是否通过
//     const v = await new PositiveArticleIdParamsValidator().validate(ctx);
  
//     // 获取分类ID参数
//     const id = v.get('path.id');
//     await UserLoginDao.destroy(id);
  
//     // 返回结果
//     ctx.response.status = 200;
//     ctx.body = res.success('删除评论成功')
//   })
  
//   // 修改评论
//   router.put('/comment/:id', new Auth(AUTH_ADMIN).m, async (ctx) => {
  
//     // 通过验证器校验参数是否通过
//     const v = await new PositiveArticleIdParamsValidator().validate(ctx);
  
//     // 获取分类ID参数
//     const id = v.get('path.id');
//     await UserLoginDao.update(id, v);
  
//     // 返回结果
//     ctx.response.status = 200;
//     ctx.body = res.success('更新评论成功')
//   })
  
//   // 获取评论列表
//   router.get('/comment', async (ctx) => {
//     const page = ctx.query.page;
//     let commentList = await UserLoginDao.list(page);
  
//     // 返回结果
//     ctx.response.status = 200;
//     ctx.body = res.json(commentList);
  
//   })
  
//   // 获取评论详情
//   router.get('/comment/:id', async (ctx) => {
//     // 通过验证器校验参数是否通过
//     const v = await new PositiveArticleIdParamsValidator().validate(ctx);
  
//     // 获取分类ID参数
//     const id = v.get('path.id');
//     let comment = await UserLoginDao.detail(id)
  
//     // 返回结果
//     ctx.response.status = 200;
//     ctx.body = res.json(comment);
  
//   })
  
//   // 获取关联目标下的评论列表
//   router.get('/comment/target/list', async (ctx) => {
//     let comment = await UserLoginDao.targetComment(ctx.query)
  
//     // 返回结果
//     ctx.response.status = 200;
//     ctx.body = res.json(comment);
//   })
  
  module.exports = router